﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using AVEIT.autogestionAVEIT.AccesoDatos;
using AVEIT.autogestionAVEIT.Negocio.Entidades;

namespace AVEIT.autogestionAVEIT.Negocio.Gestores
{
    public class GestorDomicilio
    {
        public static DataTable ObtenerProvincias(int pais)
        {
            SqlParameter prIdPais = new SqlParameter("@id_pais", pais);
            String cadena = "Select id_provincia, nombre from Provincia where id_pais=@id_pais";
            return AccesoADatos.consultarSQL(cadena, prIdPais);
        }
        public static DataTable ObtenerProvincias()
        {
            return AccesoADatos.consultarSQL("Select id_provincia, nombre from Provincia");
        }

        public static DataTable ObtenerPaises()
        {
            return AccesoADatos.consultarSQL("Select id_pais, nombre from Pais");
        }

        public static DataTable ObtenerLocalidades(int provincia)
        {

            SqlParameter prIdProvincia = new SqlParameter("@id_provincia", provincia);
            String cadena = "Select id_ciudad, nombre from Ciudad where id_provincia=@id_provincia";
            return AccesoADatos.consultarSQL(cadena, prIdProvincia);
         }
        public static DataTable ObtenerLocalidades()
        {
            return AccesoADatos.consultarSQL("SELECT id_ciudad, nombre FROM Ciudad");
        }

        public static int grabarDomicilio(Domicilio dom)
        {
            
            SqlParameter prLocalidad = new SqlParameter("@id_loc", dom.id_localidad);
            SqlParameter prCalle = new SqlParameter("@calle", dom.calle);
            SqlParameter prNumero = new SqlParameter("@num", dom.numero);
            SqlParameter prPiso = new SqlParameter("@piso", dom.piso);
            SqlParameter prDepto = new SqlParameter("@dpto", dom.departamento);
            SqlParameter prBarrio = new SqlParameter("@barrio", dom.barrio);
            SqlParameter prCodPostal = new SqlParameter("@codPostal", dom.cod_postal);
            String cadena = "";
            try
            {
                if (dom.id_domicilio.HasValue)
                {
                    SqlParameter prIdDomicilio = new SqlParameter("@id_domicilio", dom.id_domicilio);
                    cadena = "UPDATE Domicilio SET id_localidad = @id_loc, calle = @calle, numero = @num, piso = @piso, departamento = @dpto, " + 
                            "barrio = @barrio, codigoPostal = @codPostal WHERE id_domicilio = @id_domicilio";
                    AccesoADatos.ejecutarSQL(cadena, prIdDomicilio, prLocalidad, prCalle, prNumero, prPiso, prDepto, prBarrio, prCodPostal);
                }
                else
                {
                    cadena = "INSERT INTO Domicilio (id_localidad, calle, numero, piso, departamento, barrio, codigoPostal) VALUES " +
                        "(@id_loc, @calle, @num, @piso, @dpto, @barrio, @codPostal); SELECT  @@identity;";
                    dom.id_domicilio = AccesoADatos.ejecutarSQLeIdentity(cadena, prLocalidad, prCalle, prNumero, prPiso, prDepto, prBarrio, prCodPostal);
                }
                return int.Parse(dom.id_domicilio.ToString());    
            }
            catch (Exception ex)
            {

                throw new ApplicationException("Error al grabar un domicilio" + ex.Message);
            }
        }

        public static Domicilio obtenerDomicilio(int id_dom)
        {
            SqlParameter pr_dom = new SqlParameter("@id_dom", id_dom);
            string cadena = "SELECT id_localidad, calle, numero, piso, departamento, barrio, codigoPostal FROM Domicilio WHERE id_domicilio = @id_dom";
            DataTable dt = AccesoADatos.consultarSQL(cadena, pr_dom);
            Domicilio dom = new Domicilio(int.Parse(dt.Rows[0]["id_localidad"].ToString()), dt.Rows[0]["calle"].ToString(), int.Parse(dt.Rows[0]["numero"].ToString()), int.Parse(dt.Rows[0]["piso"].ToString()), dt.Rows[0]["departamento"].ToString(), dt.Rows[0]["barrio"].ToString(),int.Parse(dt.Rows[0]["codigoPostal"].ToString()));
            return dom;
        }

        public static void eliminarDomicilio(int id_domicilio)
        {
            String cadena = "DELETE FROM Domicilio WHERE id_domicilio = @Id_domicilio";
            SqlParameter prIdDomicilio = new SqlParameter("@Id_domicilio", id_domicilio);
            AccesoADatos.ejecutarSQLTransaccion(cadena, prIdDomicilio);
        }

    }
}